#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include "ball.h"
#include <vector>

#include <QMainWindow>
#include <QPushButton>
#include <QPaintEvent>
#include <QMouseEvent>
#include <QObject>

#include <QTimer>
#include <QLabel>
#include <QSound>

class MainWindow:public QMainWindow
{
    Q_OBJECT
private:
    QPoint mouse;//鼠标的移动，控制球的移动
    int status;//记录状态，0未开始游戏，1开始游戏，2下落
    std::vector <BALL> balls;//容器，存放球
    BALL unfalling;//未下落的球

    //关于各种按钮
    QPushButton *start;
    QPushButton *rank;
    QPushButton *back;
    QPushButton *exit;
    QPushButton *pause;
    QPushButton *finish;
    QPushButton *win;
    QPushButton *again;

    QLabel *q;

    //一些函数
    void setbutton1(QPushButton*,int width,int height,int x,int y,QString);
    void setbutton2(QPushButton*,int width,int height,int x,int y,int a);
    void initialUIC();
    void iniSignals();
    void nextBall();//将下一个球初始化
    void change();//改变所有球的坐标
    void collideWall(int i);//判断是否撞墙
    void collision();//判断所有球两两之间是否相撞
    void combine(int i,int j);//是否可以合成
    void restart();//重启
    void winorlose();//检查游戏是否失败

private slots:
    void showbuttons(bool);//控制初始界面按钮的显示
    void StartGame();
    void Showscore();
    void backgame();
    void pausegame();
    void finishgame();
    void wingame();
    void restartgame();

public:
    MainWindow(QWidget *parent=0);
    ~MainWindow();

protected:
    void repaintEvent(QPaintEvent *event);
    void removemouseEvent(QMouseEvent *event);
    void repressmouseEvent(QMouseEvent *event);
    void retimeEvent(QTimerEvent *event);


};


QT_BEGIN_NAMESPACE;
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE


#endif // MAINWINDOW_H
